// package com.ai.study.dashscope.controller.rag.config;
//
// import org.slf4j.Logger;
// import org.slf4j.LoggerFactory;
// import org.springframework.ai.embedding.EmbeddingModel;
// import org.springframework.ai.embedding.TokenCountBatchingStrategy;
// import org.springframework.ai.vectorstore.redis.RedisVectorStore;
// import org.springframework.beans.factory.annotation.Qualifier;
// import org.springframework.beans.factory.annotation.Value;
// import org.springframework.context.annotation.Bean;
// import org.springframework.context.annotation.Configuration;
// import redis.clients.jedis.JedisPooled;
//
// @Configuration
// public class RedisVectorStoreConfiguration {
//
//     private static final Logger logger = LoggerFactory.getLogger(RedisVectorStoreConfiguration.class);
//
//
//     // @Value("${spring.data.redis.host}")
//     private String host = "192.168.10.102";
//     // @Value("${spring.data.redis.port}")
//     private int port = 6379;
//     // @Value("${spring.ai.vectorstore.redis.prefix}")
//     private String prefix = "prefix_spring_ai_alibaba";
//     // @Value("${spring.ai.vectorstore.redis.index}")
//     private String indexName = "index_spring_ai_alibaba";
//
//     @Bean(name = "jedisPooled2")
//     public JedisPooled jedisPooled() {
//         logger.info("Redis host: {}, port: {}", host, port);
//         return new JedisPooled(host, port);
//     }
//
//     @Bean
//     @Qualifier("redisVectorStore")
//     public RedisVectorStore redisVectorStore(@Qualifier("jedisPooled2") JedisPooled jedisPooled,
//                                              @Qualifier("dashScopeEmbeddingModel") EmbeddingModel embeddingModel) {
//         logger.info("create redis vector store");
//         return RedisVectorStore.builder(jedisPooled, embeddingModel)
//                 // Optional: defaults to "spring-ai-index"
//                 .indexName(indexName)
//                 // Optional: defaults to "embedding:"
//                 .prefix(prefix)
//                 // Optional: define metadata fields for filtering
//                 .metadataFields(
//                         RedisVectorStore.MetadataField.tag("name"),
//                         RedisVectorStore.MetadataField.numeric("year"))
//                 // Optional: defaults to false
//                 .initializeSchema(true)
//                 // Optional: defaults to TokenCountBatchingStrategy
//                 .batchingStrategy(new TokenCountBatchingStrategy())
//                 .build();
//     }
//
// }
